<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="zh-CN">
<%@include file="/WEB-INF/include_head.jsp" %>
<link rel="stylesheet" href="css/pagination.css">
<link rel="stylesheet" href="/ztree/zTreeStyle.css"/>
<script type="text/javascript" src="/jquery/jquery.pagination.js"></script>
<script type="text/javascript" src="/ztree/jquery.ztree.all-3.5.min.js"></script>
<script type="text/javascript" src="/nhcf/role.js" charset="UTF-8"></script>
<script type="text/javascript" src="/nhcf/assign.js" charset="UTF-8"></script>
<script type="text/javascript" src="/layer/layer.js" charset="UTF-8"></script>
<script type="text/javascript">
    $(function () {
        // 为分页操作准备初始化数据
        window.pageNum = 1;
        window.pageSize = 5;
        window.keyword = "";
        // 调用执行分页的函数， 显示分页效果
        generatePage();
        // 设置查询按钮的单击响应函数
        $("#searchBtn").click(function () {
            // 获取关键字并赋值给对应的全局变量
            window.keyword = $("#keyword").val();
            generatePage();
        })
        // 设置添加管理员模态框按钮响应函数
        $("#showAddModalBtn").click(function () {
            $("#addModal").modal("show");
        })
        // 给新增模态框中的保存按钮绑定单击响应函数
        $("#saveBtn").click(function () {
            // 获取用户在文本框中输入的角色名称
            // #addModal 表示找到整个模态框
            // 空格表示在后代元素中继续查找
            // [name=roleName]表示匹配 name 属性等于 roleName 的元素
            let roleName = $.trim($("#addModal [name=roleName]").val());
            // 发送 Ajax 请求
            $.ajax({
                url: "role/do/save.json",
                type: "post",
                data: {
                    name: roleName
                },
                dataType: "json",
                success: function (response) {
                    let result = response.result;
                    if (result == "SUCCESS") {
                        layer.msg("操作成功！ ");
                        // 将页码定位到最后一页
                        window.pageNum = 99999999;
                        // 重新加载分页数据
                        generatePage();
                    }
                    if (result == "FAILED") {
                        layer.msg("操作失败！ " + response.message);
                    }
                },
                error: function (response) {
                    layer.msg(response.status + " " + response.statusText);
                }
            })
            // 关闭模态框
            $("#addModal").modal("hide");
            // 清理模态框
            $("#addModal [name=roleName]").val("");
        })
        // 绑定动态的pencilBtn，并执行更新操作
        $("#rolePageBody").on("click",".pencilBtn",function(){
            // 打开模态框
            $("#editModal").modal("show");
            // 获取表格中当前行中的角色名称
            let roleName = $(this).parent().prev().text();
            // 获取当前角色的 id
            // 为了让执行更新的按钮能够获取到 roleId 的值， 把它放在全局变量上
            window.roleId = this.id;
            // 使用 roleName 的值设置模态框中的文本框
            $("#editModal [name=roleName]").val(roleName);
        })
        // 给更新模态框中的更新按钮绑定单击响应函数
        $("#editBtn").click(function(){
            // 从文本框中获取新的角色名称
            let roleName = $("#editModal [name=roleName]").val();
            // 发送 Ajax 请求执行更新
            $.ajax({
                url:"role/do/update.json",
                type:"post",
                data:{
                    id:window.roleId,
                    name:roleName
                },
                dataType:"json",
                success:function(response){
                    let result = response.result;
                    if(result == "SUCCESS") {
                        layer.msg("操作成功！ ");
                        // 重新加载分页数据
                        generatePage();
                    } if
                    (result == "FAILED") {
                        layer.msg("操作失败！ "+response.message);
                    }
                },
                error:function(response){
                    layer.msg(response.status+" "+response.statusText);
                }
            })
            // 关闭模态框
            $("#editModal").modal("hide");
        })
        // 绑定删除模态框的确认按钮
        $("#deleteSingleBtn").click(function () {
            // 从全局变量获取权限id数组
            let requestBody = JSON.stringify(window.roleIdList)
            // 发送Ajax请求
            $.ajax({
                url:"role/do/delete.json",
                type:"post",
                data:requestBody,
                contentType:"application/json;charset=UTF-8",
                dataType:"json",
                success:function(response){
                    let result = response.result;
                    if(result == "SUCCESS") {
                        layer.msg("操作成功！ ");
                        // 重新加载分页数据
                        generatePage();
                    } if
                    (result == "FAILED") {
                        layer.msg("操作失败！ "+response.message);
                    }
                },
                error:function(response){
                    layer.msg(response.status+" "+response.statusText);
                }
            })
            // 关闭模态框
            $("#deleteModal").modal("hide");
            // 重置全选框状态
            $(".summaryCheckbox").prop("checked", false);
        })
        // 单条删除按钮动态绑定模态框
        $("#rolePageBody").on("click",".removeBtn", function (){
            // 获取表格中当前行中的角色名称
            let roleName = $(this).parent().prev().text();
            // 将roleId与roleName封装成数组
            let roleList = [{
                roleName:roleName,
                roleId:this.id
            }]
            // 执行openRoleDeleteModal函数
            openRoleDeleteModal(roleList);
        })
        // 为全选按钮设置单击响应函数
        $(".summaryCheckbox").click(function () {
            // 获取全选按钮的当前状态
            let currentStatus = this.checked;
            // 设置当前页的子选择按钮为可选
            $(".itemCheckbox").prop("checked", currentStatus);
        })
        // 设置子选项按钮全选则全选按钮同步选中
        $("#rolePageBody").on("click",".itemCheckbox", function() {
            // 当前已被选中的
            let currentChecked = $(".itemCheckbox:checked").length;
            // 总的checkbox数量
            let totalCheckbox = $(".itemCheckbox").length;
            // 设置全选按钮的状态
            $(".summaryCheckbox").prop("checked", currentChecked == totalCheckbox);
        })
        // 批量删除按钮设置单击响应函数
        $("#deleteBatchBtn").click(function () {
            // 创建role数组
            let roleList = [];
            // 获取被选中角色的id
            $(".itemCheckbox:checked").each(function () {
                let roleName = $(this).parent().prev().text();
                roleList.push({
                    roleName:roleName,
                    roleId:this.id
                })
            })
            // 判断roleList是否为空
            if (roleList.length == 0) {
                layer.msg("删除列表不能为空！请重新选择后，再进行批量删除操作。");
                return null;
            }
            // 执行删除操作
            openRoleDeleteModal(roleList);
        })
        // 给分配权限按钮绑定单击响应函数
        $("#rolePageBody").on("click",".checkAssignBtn",function(){
            // 将roleId存入全局变量中
            window.roleId = this.id;
            // 打开模态框
            $("#assignModal").modal("show");
            openAssignAuthTree();
            // 回显复选框的状态
            presentCheckBox();
        })
        // 给分配权限模态框中的“分配” 按钮绑定单击响应函数
        $("#assignBtn").click(function(){
            confirmAuthAssign();
            $("#assignModal").modal("hide");
        })
    })
</script>
<body>
<%@include file="/WEB-INF/include_nav.jsp" %>
<div class="container-fluid">
    <div class="row">
        <%@include file="/WEB-INF/include_sidebar.jsp" %>
        <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h3 class="panel-title"><i class="glyphicon glyphicon-th"></i> 数据列表</h3>
                </div>
                <div class="panel-body">
                    <form class="form-inline" role="form" style="float:left;">
                        <div class="form-group has-feedback">
                            <div class="input-group">
                                <div class="input-group-addon">查询条件</div>
                                <input name="keyword" id="keyword" class="form-control has-success" type="text"
                                       placeholder="请输入查询条件">
                            </div>
                        </div>
                        <button id="searchBtn" type="button" class="btn btn-warning"><i
                                class="glyphicon glyphicon-search"></i> 查询
                        </button>
                    </form>
                    <button type="button" id="deleteBatchBtn" class="btn btn-danger" style="float:right;margin-left:10px;"><i
                            class=" glyphicon glyphicon-remove"></i> 删除
                    </button>
                    <button type="button" id="showAddModalBtn" class="btn btn-primary" style="float:right;">
                        <i class="glyphicon glyphicon-plus"></i> 新增
                    </button>
                    <br>
                    <hr style="clear:both;">
                    <div class="table-responsive">
                        <table class="table  table-bordered">
                            <thead>
                            <tr>
                                <th width="30">#</th>
                                <th width="30"><input type="checkbox" class="summaryCheckbox"></th>
                                <th>名称</th>
                                <th width="100">操作</th>
                            </tr>
                            </thead>
                            <tbody id="rolePageBody">
                            </tbody>
                            <tfoot>
                            <tr>
                                <td colspan="6" align="center">
                                    <div id="Pagination" class="pagination"><!-- 这里显示分页 --></div>
                                </td>
                            </tr>
                            </tfoot>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<%@include file="/WEB-INF/modal/role/modal_role_add.jsp" %>
<%@include file="/WEB-INF/modal/role/modal_role_edit.jsp" %>
<%@include file="/WEB-INF/modal/role/modal_role_delete.jsp"%>
<%@include file="/WEB-INF/modal/assign/modal_assign_auth.jsp"%>
</body>
</html>